package com.cloud.consumer.controller;

import com.cloud.consumer.service.IProducerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author wangy
 * @create 2021/6/15 9:56
 * @Description   openFeign形式调用 producer接口
 */
@RestController
@RequestMapping("/restTemplateConsumer")
public class RestTemplateConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    /**
     * restTemplate形式调用 producer接口和传值
     * @param name
     * @return
     */
    @PostMapping("/postDetail")
    public String postDetail(@RequestParam String name){
        //post形式必须用MultiValueMap接口实现类来传值
        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
        //map的put的值是list
        paramMap.put("name", Arrays.asList(name));
        //url解析： producer为服务提供者的application.name 后面跟接口请求路径
        return restTemplate.postForObject("http://producer/producer/postDetail", paramMap, String.class);
    }

    /**
     * restTemplate形式调用 producer接口和传值
     * @param name
     * @return
     */
    @GetMapping("/getDetail")
    public String getDetail(@RequestParam String name){
        //get方法使用map来传值，url中使用占位符来跟map的key想对应
        Map map = new HashMap();
        map.put("name",name);
        //url解析： producer为服务提供者的application.name 后面跟接口请求路径
        return restTemplate.getForObject("http://producer/producer/getDetail?name={name}", String.class, map);
    }

}
